iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
AI & Data

30天成為資料分析師-手把手R語言與資料分析教學系列 第 10

[Day 10] R語言melt()與dcast()函數使用

  • 分享至 

  • xImage
  •  

不知不覺鐵人賽已經進行1/3了,R語言的基本介紹也已經差不多結束,接著會進入分析中常用的資料處理環節,今天我們就先來介紹數據的欄位格式轉換

這邊會繼續使用Day9的資料來做舉例,假設今天有以下的資料day10_A,想把他轉成day10_B的格式,可以使用melt(),由於melt()函數在reshape2這個套件中,因此需要先利用library()載入套件。

  • melt()參數定義如下:
    • id.vars:不要更動的欄位名稱
    • measure.vars:要做轉換的欄位名稱
    • variable.name:轉換後的欄位命名

轉換前:

library(reshape2)
day10_A = data.frame(
                  May_score = c(80, 93, 99),
                  Ann_score = c(85, 82, 95),
                  Jay_score = c(90, 78, 92)
                )
                
# 原始資料呈現
day10_A
  May_score Ann_score Jay_score
1        80        85        90
2        93        82        78
3        99        95        92

轉換後:

day10_B <- melt(day10_A, 
                    measure.vars =c("May_score", "Ann_score", "Jay_score"),
                    variable.name = c("New_name"))
  
day10_B
   New_name value
1 May_score    80
2 May_score    93
3 May_score    99
4 Ann_score    85
5 Ann_score    82
6 Ann_score    95
7 Jay_score    90
8 Jay_score    78
9 Jay_score    92

  • dcast():melt()的反義
    formula: 要轉換的格式內容(公式: 要固定的行~要轉換的列)
    value.var: 要轉換值的欄位名
dcast(day10_B, formula = subject ~ New_name, value.var="value")
  subject May_score Ann_score Jay_score
1 Chinese        80        85        90
2 English        99        95        92
3    Math        93        82        78

下一篇將介紹一個筆者在資料處理最常使用的套件: dplyr()melt()dcast()的介紹就到這!


上一篇
[Day 9] R語言apply函數
下一篇
[Day 11] R語言dplyr套件介紹(1)
系列文
30天成為資料分析師-手把手R語言與資料分析教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
obarisk
iT邦研究生 1 級 ‧ 2023-09-12 09:01:33

這個有點舊了。現在作者應該會建議換到 tidyr。

我要留言

立即登入留言